"""
任务一配置文件

根据您的需求调整以下参数
"""

# 数据路径配置
DATA_PATHS = {
    'source_data_path': 'datasets/sourceDataset',
    'target_data_path': 'datasets/targetDataset'
}

# 数据加载配置
DATA_LOADING_CONFIG = {
    'max_files_per_category': 5,  # 每个类别最大文件数，可以调整
    'sampling_rates': ['12kHz', '48kHz'],  # 要使用的采样频率
    'sensor_types': ['DE', 'FE'],  # 要使用的传感器类型
    'categories': ['B', 'IR', 'OR', 'N']  # 要使用的数据类别
}

# 特征提取配置
FEATURE_EXTRACTION_CONFIG = {
    'time_domain_features': True,  # 是否提取时域特征
    'frequency_domain_features': True,  # 是否提取频域特征
    'time_frequency_features': True,  # 是否提取时频域特征
    'bearing_fault_features': True,  # 是否提取轴承故障特征频率
    'nonlinear_features': True,  # 是否提取非线性特征
    'wavelet_level': 4,  # 小波分解层数
    'stft_nperseg': 256,  # STFT窗口长度
    'fault_frequency_bandwidth': 0.1,  # 故障频率带宽比例
    'fault_frequency_harmonics': 3  # 故障频率谐波数量
}

# 特征选择配置
FEATURE_SELECTION_CONFIG = {
    'method': 'random_forest',  # 特征选择方法: 'random_forest', 'mutual_info', 'pca'
    'top_k_features': 30,  # 选择的特征数量
    'random_forest_n_estimators': 100,  # 随机森林树的数量
    'random_state': 42  # 随机种子
}

# 可视化配置
VISUALIZATION_CONFIG = {
    'figure_size': (12, 8),  # 图形大小
    'dpi': 100,  # 图形分辨率
    'font_size': 12,  # 字体大小
    'color_palette': 'viridis',  # 颜色调色板
    'show_plots': True  # 是否显示图形
}

# 输出配置
OUTPUT_CONFIG = {
    'save_features': True,  # 是否保存特征数据
    'save_plots': True,  # 是否保存图形
    'save_report': True,  # 是否保存报告
    'output_dir': 'task1_output',  # 输出目录
    'features_filename': 'extracted_features.csv',  # 特征文件名
    'report_filename': 'task1_report.md'  # 报告文件名
}

# 轴承参数配置
BEARING_PARAMS = {
    'SKF6205': {
        'd': 0.3126,  # 滚动体直径 (英寸)
        'D': 1.537,   # 轴承节径 (英寸)
        'n_balls': 9  # 滚动体数量
    },
    'SKF6203': {
        'd': 0.2656,  # 滚动体直径 (英寸)
        'D': 1.122,   # 轴承节径 (英寸)
        'n_balls': 9  # 滚动体数量
    }
}

# 故障类型配置
FAULT_TYPES = {
    'B': '滚动体故障',
    'IR': '内圈故障',
    'OR': '外圈故障',
    'N': '正常',
    'Unknown': '未知'
}

# 传感器类型配置
SENSOR_TYPES = {
    'DE': '驱动端',
    'FE': '风扇端',
    'BA': '基座',
    'Unknown': '未知'
}
